<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="test"></div>
  <hr>
  <div id="test1"></div>

  <script src="../js/react.development.js"></script>
  <script src="../js/react-dom.development.js"></script>
  <script src="../js/babel.min.js"></script>
  <script src="../js/prop-types.js"></script>
  <script type="text/babel">
    /*
        需求: 自定义用来显示一个人员信息的组件, 效果如页面. 说明
          1). 如果性别没有指定, 默认为男
          2). 如果年龄没有指定, 默认为18
      */

      // 1. 定义组件
      class Person extends React.Component {

        render() {
          return (
            <ul>
              <li>姓名：{ this.props.name }</li> 
              <li>性别：{ this.props.sex }</li> 
              <li>年龄：{ this.props.age }</li> 
            </ul>
          )
        }
      }

      // 如果一个组件没有状态可以使用函数组件
      function MyComponent(props) {
        return (
            <ul>
              <li>姓名：{props.name}</li> 
              <li>性别：{props.sex}</li> 
              <li>年龄：{props.age}</li> 
            </ul>
        )
      }

      // 指定props属性的类型
      MyComponent.propTypes = {
        name: PropTypes.string.isRequired,
        age: PropTypes.number,
        sex: PropTypes.string
      }

      const person1 = {
        name: '张三',
        age: 19,
        sex: '男'
      }
      const person2 = {
        name: '李四',
        age: 21,
        sex: '女'
      }

      // 2. 渲染到页面
      ReactDOM.render(<Person {...person1}/>, document.getElementById('test'));
      ReactDOM.render(<MyComponent {...person2}/>, document.getElementById('test1'));
  </script>
</body>

</html>